package primitive

type Int struct {
	SetMode
	value int
}

func (o *Int) IsPresent(f func(v int)) {
	if o.Set() {
		f(o.value)
	}
}

func (o *Int) Reset() {
	o.value = 0
	o.SetTo(false)
}

func (o *Int) Value() int {
	return o.value
}

func (o *Int) SetValue(v int) {
	o.SetTo(true)
	o.value = v
}

func (o *Int) SetValue64(v int64) {
	o.SetTo(true)
	o.value = int(v)
}

func (o *Int) Or(d int) int {
	if o.Set() {
		return o.value
	}
	return d
}
